#include "json/cJSON.h"
#include "log/log.h"
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    char *n = "tom";
    int age = 20;

    //1. 生成json  {"name": "tom", "age": 20}
    // 创建一个空的cJSON对象
    cJSON * cjson_obj = cJSON_CreateObject();
    // 向对象中添加name属性
    cJSON_AddStringToObject(cjson_obj, "name", n);
    // 向对象中添加age属性
    cJSON_AddNumberToObject(cjson_obj, "age", age);
    // 将对象转换为未格式的json字符串
    char *json = cJSON_PrintUnformatted(cjson_obj);

    log_debug("生成json: %s", json);


    // 2. 解析json
    // 解析json字符串得到包含数据的cJSON对象
    cJSON *cjson_obj2 = cJSON_Parse(json);
    // 读取cJSON对象中的name属性
    cJSON *name_cjson = cJSON_GetObjectItem(cjson_obj2, "name");
    // 读取cJSON对象中的age属性
    cJSON *age_cjson = cJSON_GetObjectItem(cjson_obj2, "age");
    if (name_cjson==NULL || age_cjson==NULL) {
        log_error("json中没有name或age属性");
        return -1;
    }
    char *name2 = name_cjson->valuestring;
    int age2 = age_cjson->valueint;
    log_debug("解析json, name: %s, age: %d", name2, age2);

    // 释放内存
    cJSON_Delete(cjson_obj);
    cJSON_Delete(cjson_obj2);
    free(json);


    return 0;
}
